Serial Attached SCSI (SAS) is a term referring to various technologies designed to implement data transfer between computer devices. The SAS protocol is a serial successor to the parallel Small Computer System Interface. In the SAS protocol, all SAS devices are either an initiator device, a target device, or an expander device. Initiator devices are devices that begin a SAS data transfer, while target devices are the devices to which initiator devices transfer data. Together, initiator devices and target devices are also known in some cases as end devices.
SAS expanders are devices that facilitate data transfer between multiple initiator devices and multiple target devices. The SAS protocol utilizes a point-to-point bus topology. Therefore, if an initiator device is required to connect to multiple target devices, a direct connection must be made between the initiator device and each individual target device in order to facilitate each individual data transfer between the initiator device and each individual target device. SAS expanders manage the connections and data transfer between multiple initiator devices and multiple target devices. SAS expanders may contain SAS devices.
FIG. 1 illustrates a representative SAS system 10 that can serve to explain how the “discovery” process is currently implemented. In general, SAS system (e.g., SAS topology) includes a controller 12 that communicates bi-directionally with an expander 14 (also labeled Expander A in FIG. 1). Expanders 16, 18, and 20 (respectively, expanders D, C, and B) are also shown in FIG. 1 with respect to expander 14 and SAS Disks 22-32. The controller 12 can be a SMP initiator. The controller 12 is thus connected to expander A, which constitutes the root expander in the topology. Expander A is connected to 3 more expanders namely expanders B, C, and D. Additionally, two SAS disks 34, 36 can be connected to expander 14.
Let us assume that a physical layer (“phy”) with a lowest phy identifier at each device is at the left top portion of the configuration shown in FIG. 1 and remaining phys have increasing phy identifiers assigned in a counter clockwise direction. All the expanders are self-configuring expanders (i.e., expanders which perform discovery on their own and configure their routing table). Please refer to SAS specification sas2r16 For more details about the self configuring expander, it is suggested to refer to the SAS Specification, Working Draft American National Standard, Information Technology—Serial Attached SCSI-2 (SAS-2), Project T10/1760-D, Revision 16, Apr. 18, 2009, which is incorporated herein by reference in its entirety.
When the entire topology (e.g., system 10) is powered up, each expander begins discovery beginning from its own phys. We can consider a discovery process carried by Root expander (e.g., Expander A). The lowest phy identifier can be connected to the controller 12 so that in an expander route table, an end device is stored for the first phy identifier along with its SAS address and supported protocol information.
Similarly, expander A finds that 2 SAS disks are connected to next two phys and hence, in its expander route table stores as end devices connected to these two phys along with other information. On fourth phy root expander finds another expander i.e. expander B so root expander stores that an expander device connected against fourth phy. Similarly, expanders C and D can be detected one after the other and for corresponding phys in Expander A's route table an entry is made indicating connection to these expanders.
After the completion of discovery on all of its phys, the root expander begins discovery on devices which are of ‘expander’ type (i.e., expanders B, C, and D). The same discovery process is followed as explained above and all SAS disks 22 through 32 are discovered and entries are made in route table of root expander A. In current implementations during discovery of the topology, if multiple expanders possess the same SAS address, then neither expanders nor controllers would perform discovery on such duplicate expanders and notify the user of such expanders in the topology. Hence, all the devices connected to such duplicate expanders along with duplicate expanders will not be part SAS topology at the end of discovery and user will not be able to identify the position of such devices and expanders to subsequently modify the SAS addresses.